module hip.hipaudio.backend.openal.al_err; version(OpenAL): import bindbc.openal; package string alGetErrorString(ALenum err, string file = __FILE__, size_t line = __LINE__) nothrow { string ret; if(err != AL_NO_ERROR) { final switch(err) { case AL_INVALID_NAME: ret = "AL_INVALID_NAME: A bad name (ID) was passed to an OpenAL function"; break; case AL_INVALID_ENUM: ret = "AL_INVALID_ENUM: An invalid enum value was passed to an OpenAL function"; break; case AL_INVALID_VALUE: ret = "AL_INVALID_VALUE: An invalid value was passed to an OpenAL function"; break; case AL_INVALID_OPERATION: ret = "AL_INVALID_OPERATION: A requested operation is not valid"; break; case AL_OUT_OF_MEMORY: ret = "AL_OUT_OF_MEMORY: The requested operation resulted in OpenAL running out of memory"; break; } import hip.util.conv:to; ret~= "("~file~":"~line.to!string~")"; } return ret; } package void alCheckError(string title="", string file = __FILE__, size_t line = __LINE__) { version(HIPREME_DEBUG) { import hip.error.handler; ALenum err = alGetError(); if(err != AL_NO_ERROR) { scope string errTitle = "OpenAL Error: " ~title; ErrorHandler.showErrorMessage(errTitle, alGetErrorString(err, file, line)); } } }